Fixed ARM-software/tf-issues#603
authornathan-menhorn <[email protected]>
Tue, 17 Jul 2018 15:08:30 +0000 (09:08 -0600)
committerNathan Menhorn <[email protected]>
Thu, 23 Aug 2018 20:44:18 +0000 (14:44 -0600)
Updated optee_utils.c to fix ARM-software/tf-issues#603 related to the
tee-validate-header bug.

Minor updates to the header valid checking logic. It would never make
sense to have less than 1 image to load so this is now checked.

Changed OPTEE_MAX_IMAGE_NUM to OPTEE_MAX_NUM_IMAGES to clarify its
definition. OPTEE_MAX_IMAGE_NUM sounds like an ID assigned to the last
image to load. OPTEE_MAX_NUM_IMAGES sounds like the maximum number of
images to load.

Signed-off-by: Nathan Menhorn <[email protected]>
lib/optee/optee_utils.c

index ecf7cc0576342e4fcfb6f860eefddd2f0434bff0..34d095b0db2b204770ba0838e455d19d6af70c66 100644 (file)
@@ -25,14 +25,15 @@ typedef struct optee_image {
 
 #define OPTEE_PAGER_IMAGE_ID           0
 #define OPTEE_PAGED_IMAGE_ID           1
-#define OPTEE_MAX_IMAGE_NUM            2
+
+#define OPTEE_MAX_NUM_IMAGES           2u
 
 #define TEE_MAGIC_NUM_OPTEE            0x4554504f
 /*
  * magic: header magic number.
  * version: OPTEE header version:
- *     1 - not supported
- *     2 - supported
+ *             1 - not supported
+ *             2 - supported
  * arch: OPTEE os architecture type: 0 - AARCH32, 1 - AARCH64.
  * flags: unused currently.
  * nb_images: number of images.
@@ -53,14 +54,20 @@ typedef struct optee_header {
  ******************************************************************************/
 static inline int tee_validate_header(optee_header_t *header)
 {
+       int valid = 0;
+
        if ((header->magic == TEE_MAGIC_NUM_OPTEE) &&
-               (header->version == 2) &&
-               (header->nb_images <= OPTEE_MAX_IMAGE_NUM)) {
-               return 1;
+               (header->version == 2u) &&
+               (header->nb_images > 0u) &&
+               (header->nb_images <= OPTEE_MAX_NUM_IMAGES)) {
+               valid = 1;
        }
 
-       WARN("Not a known TEE, use default loading options.\n");
-       return 0;
+       else {
+               WARN("Not a known TEE, use default loading options.\n");
+       }
+
+       return valid;
 }
 
 /*******************************************************************************